/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ru.jSkyRoom.interfaces.major;

import ru.jSkyRoom.interfaces.additional.HasLight;
import ru.jSkyRoom.interfaces.additional.HasModel;
import ru.jSkyRoom.interfaces.additional.HasRange;
import ru.jSkyRoom.interfaces.additional.HasSpeed;
import ru.jSkyRoom.interfaces.stub.Explosion;
import ru.jSkyRoom.interfaces.stub.JSkySound;
import ru.jSkyRoom.interfaces.sub.JSkyModel;
import skyproc.PROJ;
import skyproc.PROJ.ProjectileFlag;

/**
 *
 * @author Rakev
 */
public interface Projectile extends NamedMajor, HasModel, HasLight, HasSpeed, HasRange {

    public JSkyModel getEffectModel();

    public boolean getFlag(ProjectileFlag flag);

    public void setFlag(ProjectileFlag flag);

    public void unsetFlag(ProjectileFlag flag);

    public PROJ.ProjectileType getProjectileType();

    public void setProjectileType(PROJ.ProjectileType type);

    public float getGravity();

    public void setGravity(float gravity);

    public Light getMuzzleLight();

    public void setMuzzleLight(Light light);

    public float getTracerChance();

    public void setTracerChance(float chance);

    public float getProximity();

    public void setProximity(float proximity);

    public float getTimer();

    public void setTimer(float timer);

    public Explosion getExplosionType();

    public void setExplosionType(Explosion type);

    public JSkySound getSound();

    public void setSound(JSkySound sound);

    public float getMuzzleFlashDuration();

    public void setMuzzleFlashDuration(float duration);

    public float getFadeDuration();

    public void setFadeDuration(float duration);

    public float getImpactForce();

    public void setImpactForce(float force);

    public JSkySound getExplosionSound();

    public void setExplosionSound(JSkySound sound);

    public JSkySound getDisableSound();

    public void setDisableSound(JSkySound sound);

    public Weapon getDefaultWeaponSource();

    public void setDefaultWeaponSource(Weapon weaponSource);

    public float getConeSpread();

    public void setConeSpread(float spread);

    public float getCollisionRadius();

    public void setCollisionRadius(float radius);

    public float getLifetime();

    public void setLifetime(float lifetime);

    public float getRelaunchInterval();

    public void setRelaunchInterval(float interval);

    public Texture getDecalData();

    public void setDecalData(Texture decal);
}
